/****************************************************************************
 * Elisa 1.0                                                                *
 *--------------------------------------------------------------------------*
 * Author: Laurent Granvilliers, Vincent Sorin                              *
 * Copyright (c) 2004 Laboratoire d'Informatique de Nantes Atlantique       *
 *--------------------------------------------------------------------------*
 * Elisa is distributed WITHOUT ANY WARRANTY. Read the associated           *
 * COPYRIGHT file for more details.                                         *
 *--------------------------------------------------------------------------*
 * elisa_search_output.h                                                    *
 ****************************************************************************/

/**
 * @file elisa_search_output.h
 * @brief Classes for the output of boxes during search
 */


#ifndef _ELISA_SEARCH_OUTPUT_H
#define _ELISA_SEARCH_OUTPUT_H


#include <iostream>
#include "elisa_defs.h"
#include "elisa_variable.h"


NAMESPACE_ELISA
//forward declaration
class Solver;

/**
 * @ingroup Search
 * @class SearchOutput
 * @brief Base class for processing of a computed solution during search
 */
class SearchOutput
{
public:
	/**
 	 * Constructor
 	 */
	SearchOutput ()
	{
	}

	/**
 	 * Destructor
 	 */
	virtual ~SearchOutput ()
	{
	}

	/**
 	 * Processing of the current box of a model.
 	 * Default implementation: nothing is done
 	 * @param mo the model
 	 * @param numSol the number of the solution
 	 */
	virtual void handle(int numSol)
	{
	}

	void setSolver(Solver *so)
	{
		_solver = so;
	}
protected:
	Solver *_solver;
};
END_NAMESPACE_ELISA
#endif
